Program spusteny z IDE

Otázka od: Lebeda David

14. 10. 2002 16:23

Ahoj,

rad bych otevrel tema, ktere uz se tu resilo, a trosku ho posunul k
jinemu reseni. Potrebuji poznat, zda aplikace byla spustena z IDE ci
nikoli. V archivu jsem nasel reseni s pomoci

FindWindow('TAppBuilder', nil)

ale to neresi situaci, kdy je aplikace spustena mimo Delphi, ale v
dobe, kdy i Delphi je spusteno. Reseni s pomoci podmineneho
prekladu rovnez nepovazuji za nic prinosneho.

Na druhou stranu Windows poznaji, ze aplikace je v rezimu ladeni
(napr. nejde sestrelit). Neslo by to detekovat i programove, tj. aby
aplikace sama poznala, ze je ladena?

Dik

David Lebeda

Odpovedá: Bohdan Dudla

14. 10. 2002 16:30

Ahoj.
Pod NT muzes pouzit API funkci IsDebbugerPresent().
V Delphi 5 ji budes muset nadeklarovat sam, nachazi se v kernel32.dll.

With best regards,
Bohdan Dudla
 
Pike Electronic spol. s r.o.
Modrinova 2
300 00 Plzen
Czech Republic
 
tel: +420 19 72 40 738
fax: +420 19 74 31 738
gsm: +420 732 441 716
e-mail: bdudla@pikeelectronic.com

Odpovedá: Petr Vones

14. 10. 2002 23:26

From: "Bohdan Dudla" <bdudla@pikeelectronic.com>
> Pod NT muzes pouzit API funkci IsDebbugerPresent().
> V Delphi 5 ji budes muset nadeklarovat sam, nachazi se v kernel32.dll.

Jenze tato funkce neni ve Windows 95, takze by pak aplikace nesla vubec
spustit diky chybejicimu importu. Muzes pouzit funkci IsDebuggerAttached v
unitu JclDebug z JCL, ktera funguje na vsech verzich Windows:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=100652
http://delphi-jedi.org/CODELIBJCL

Dalsi moznost je zjistit jmeno parent procesu nebo hodnotou promenne DebugHook
urcit zdali je aplikace spustena pod debugerem.

Petr Vones